package com.smallA.association.service;

import com.smallA.association.bo.Result;
import com.smallA.association.bo.ResultAssociationDepartment;
import com.smallA.association.pojo.Association;
import com.smallA.association.pojo.Client;
import com.smallA.association.pojo.Department;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author wanda
 * 社团业务逻辑接口
 */
public interface AssociationService {

    /**
     * 更新社团信息
     *
     * @param association 要更新的社团其余信息
     * @param head        文件
     * @param QRCode      文件
     * @return 返回操作后的查询结果
     */
    Result<ResultAssociationDepartment> updateAssociation(Association association, MultipartFile head, MultipartFile QRCode);

    /**
     * 通过社团id查询对应的数据
     *
     * @param id 社团id
     * @return 返回查询结果
     */
    Result<Association> selectById(Integer id);

    /**
     * 通过用户类查询对应的数据
     *
     * @param user 用户数据
     * @return 返回查询的用户注册的社团,
     */
    Result<Object> selectByUser(Client user);

    /**
     * @param user
     * @param typeRole
     * @return
     */
    Object getUserData(Client user, Integer typeRole);

    /**
     * 通过部门信息修改对应的部门信息
     *
     * @param department 要修改的部门信息
     * @return 返回修改后的结果
     */
    Result<Object> updateByDepartment(Department department);

    /**
     * 批量上传照片文件
     *
     * @param files 文件数组
     * @param ids   要删除的id数组
     * @param aid   要操作的社团
     * @return 返回上传完成的文件
     */
    Result<Object> uploadPhotoWall(MultipartFile[] files, Integer aid, Integer[] ids);

    /**
     * 获取社团对应的照片墙
     *
     * @param association 传入的参数
     * @return 返回查询结果
     */
    Result<Object> selectPhotoWall(Association association);

    /**
     * 通过传递的id值来获取部门信息
     *
     * @param dep
     * @return
     */
    Result<Object> selectDepartment(Department dep);
}
